package cn.tedu.csmall.cart.webapi.kafka;

import cn.tedu.csmall.commons.pojo.cart.model.Cart;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
// 将当前对象保存在spring容器中
// 下面的SpringBoot任务调度才能生效
@Component
public class Producer {
        // 目标每隔10秒向kafka发送一条信息
        // 从Spring容器中获得kafkaTemplate对象
        // 我们之前配置好的依赖就能获得这个对象
        // KafkaTemplate<[话题名称类型],[传递消息的类型]>
    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;

    int i =1;
    //
    @Scheduled(fixedRate = 10000)
    public void sendMessage(){
        // 实例化Cart对象用于发送
        Cart cart = new Cart();
        cart.setId(i++);
        cart.setCommodityCode("PC100");
        cart.setPrice((int) (Math.random()*200+100));
        cart.setCount((int) (Math.random()*10+1));
        cart.setUserId("UU100");
        //将cart对象转化为json字符串
        Gson gson = new Gson();
        String json = gson.toJson(cart);
        System.out.println("发送信息的内容:" +json);
        //执行发送消息
        // send([话题名称],[要发送的消息]),需要遵循上面kafkaTemplate声明的泛型
        kafkaTemplate.send("myCart",json);
    }

}
